import axios from "axios";

/*
  全局设置axios基本地址，拦截器，异常捕获等
*/

let baseUrl = "";
// if (process.env.NODE_ENV === "development") {
//   baseUrl = "dev_url";
// } else {
//   baseUrl = "pro_url";
// }

axios.defaults.baseURL = baseUrl;
// 如果请求话费了超过 `timeout` 的时间，请求将被中断
axios.defaults.timeout = 5000;
// 表示跨域请求时是否需要使用凭证
axios.defaults.withCredentials = false;

// 响应拦截器
axios.interceptors.response.use(function (config) {});

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 如果有登录凭证,在请求参数或者请求头里携带登录凭证
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

const httpStatusCode = Object.freeze({
  NOT_FOUND: 404,
  BAD_REQUEST: 400,
});

axios.interceptors.response.use(function resolve(res) {
    debugger
    console.log('response')
    return res
  });

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    // 如果状态码是未登录,跳转到登录页
    debugger;
    return response;
  },
  function (error) {
    let { message, stack, response } = error;
    let { config, status, statusText } = response;

    switch (status) {
      case httpStatusCode.NOT_FOUND:
        console.error("404 not found");
        break;
      case httpStatusCode.BAD_REQUEST:
        console.error("400 bad request");
        break;
    }

    //   let msg = error.message
    //   let stack = error.stack

    debugger;
    // 对响应错误做点什么
    // 异常消息打印
    return Promise.reject(error);
  }
);

// axios.defaults.baseURL = 'https://api.example.com';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

// const instance = axios.create({
//     baseURL: 'https://some-domain.com/api/',
//     timeout: 1000,
//     headers: {'X-Custom-Header': 'foobar'}
//   });

// // 请求拦截器
// axios.interceptors.request.use(function (config) {
//     if (
//       config.method === "post" ||
//       config.method === "put" ||
//       config.method === "delete"
//     ) {
//       // qs序列化
//       config.data = qs.parse(config.data);
//     }
//     // 若是有做鉴权token , 就给头部带上token
//     if (storage.get(store.state.Roles)) {
//       store.state.Roles
//       config.headers.Authorization = storage.get(store.state.Roles);
//     }
//     return config;
//   }, error => {
//     message.error(error.data.error.message);
//     return Promise.reject(error.data.error.message);
//   })

export default axios;
